+Tue Apr 9 21:41:24 2002 Kristian Rietveld <kris@gtk.org>
+
+ Fixes #78110
+
+ * gtk/gtktreeselection.c (_gtk_tree_selection_internal_select_node):
+ add override_browse_mode argument and implement,
+ (gtk_tree_selection_unselect_path): always unselect the path,
+ (toplevel): update uses of _gtk_tree_selection_internal_select_node
+
+ * gtk/gtktreeview.c: update uses of
+ _gtk_tree_selection_internal_select_node
+
+ * gtk/gtktreeprivate.h (_gtk_tree_selection_internal_select_node):
+ update prototype
+
+Tue Apr 9 21:39:44 2002 Kristian Rietveld <kris@gtk.org>
+
+ Fixes #77862
+
+ * gtk/gtktreeprivate.h: add _gtk_tree_view_column_has_editable_cell
+
+ * gtk/gtktreeviewcolumn.c (_gtk_tree_view_column_has_editable_cell):
+ new function
+
+ * gtk/gtktreeview.c (gtk_tree_view_button_press): send cell event
+ on first click when cell isn't editable
+
+Tue Apr 9 21:37:31 2002 Kristian Rietveld <kris@gtk.org>
+
+ * gtk/gtktreedatalist.c (_gtk_tree_data_list_check_type): add some
+ types which were missing and useful to use (fixes #77870)
+
2002-04-09 Anders Carlsson <andersca@gnu.org>
* gtk/gtkfilesel.c (open_new_dir): Initialize error to NULL.
+Tue Apr 9 21:41:24 2002 Kristian Rietveld <kris@gtk.org>
+
+ Fixes #78110
+
+ * gtk/gtktreeselection.c (_gtk_tree_selection_internal_select_node):
+ add override_browse_mode argument and implement,
+ (gtk_tree_selection_unselect_path): always unselect the path,
+ (toplevel): update uses of _gtk_tree_selection_internal_select_node
+
+ * gtk/gtktreeview.c: update uses of
+ _gtk_tree_selection_internal_select_node
+
+ * gtk/gtktreeprivate.h (_gtk_tree_selection_internal_select_node):
+ update prototype
+
+Tue Apr 9 21:39:44 2002 Kristian Rietveld <kris@gtk.org>
+
+ Fixes #77862
+
+ * gtk/gtktreeprivate.h: add _gtk_tree_view_column_has_editable_cell
+
+ * gtk/gtktreeviewcolumn.c (_gtk_tree_view_column_has_editable_cell):
+ new function
+
+ * gtk/gtktreeview.c (gtk_tree_view_button_press): send cell event
+ on first click when cell isn't editable
+
+Tue Apr 9 21:37:31 2002 Kristian Rietveld <kris@gtk.org>
+
+ * gtk/gtktreedatalist.c (_gtk_tree_data_list_check_type): add some
+ types which were missing and useful to use (fixes #77870)
+
2002-04-09 Anders Carlsson <andersca@gnu.org>
* gtk/gtkfilesel.c (open_new_dir): Initialize error to NULL.
+Tue Apr 9 21:41:24 2002 Kristian Rietveld <kris@gtk.org>
+
+ Fixes #78110
+
+ * gtk/gtktreeselection.c (_gtk_tree_selection_internal_select_node):
+ add override_browse_mode argument and implement,
+ (gtk_tree_selection_unselect_path): always unselect the path,
+ (toplevel): update uses of _gtk_tree_selection_internal_select_node
+
+ * gtk/gtktreeview.c: update uses of
+ _gtk_tree_selection_internal_select_node
+
+ * gtk/gtktreeprivate.h (_gtk_tree_selection_internal_select_node):
+ update prototype
+
+Tue Apr 9 21:39:44 2002 Kristian Rietveld <kris@gtk.org>
+
+ Fixes #77862
+
+ * gtk/gtktreeprivate.h: add _gtk_tree_view_column_has_editable_cell
+
+ * gtk/gtktreeviewcolumn.c (_gtk_tree_view_column_has_editable_cell):
+ new function
+
+ * gtk/gtktreeview.c (gtk_tree_view_button_press): send cell event
+ on first click when cell isn't editable
+
+Tue Apr 9 21:37:31 2002 Kristian Rietveld <kris@gtk.org>
+
+ * gtk/gtktreedatalist.c (_gtk_tree_data_list_check_type): add some
+ types which were missing and useful to use (fixes #77870)
+
2002-04-09 Anders Carlsson <andersca@gnu.org>
* gtk/gtkfilesel.c (open_new_dir): Initialize error to NULL.
+Tue Apr 9 21:41:24 2002 Kristian Rietveld <kris@gtk.org>
+
+ Fixes #78110
+
+ * gtk/gtktreeselection.c (_gtk_tree_selection_internal_select_node):
+ add override_browse_mode argument and implement,
+ (gtk_tree_selection_unselect_path): always unselect the path,
+ (toplevel): update uses of _gtk_tree_selection_internal_select_node
+
+ * gtk/gtktreeview.c: update uses of
+ _gtk_tree_selection_internal_select_node
+
+ * gtk/gtktreeprivate.h (_gtk_tree_selection_internal_select_node):
+ update prototype
+
+Tue Apr 9 21:39:44 2002 Kristian Rietveld <kris@gtk.org>
+
+ Fixes #77862
+
+ * gtk/gtktreeprivate.h: add _gtk_tree_view_column_has_editable_cell
+
+ * gtk/gtktreeviewcolumn.c (_gtk_tree_view_column_has_editable_cell):
+ new function
+
+ * gtk/gtktreeview.c (gtk_tree_view_button_press): send cell event
+ on first click when cell isn't editable
+
+Tue Apr 9 21:37:31 2002 Kristian Rietveld <kris@gtk.org>
+
+ * gtk/gtktreedatalist.c (_gtk_tree_data_list_check_type): add some
+ types which were missing and useful to use (fixes #77870)
+
2002-04-09 Anders Carlsson <andersca@gnu.org>
* gtk/gtkfilesel.c (open_new_dir): Initialize error to NULL.
+Tue Apr 9 21:41:24 2002 Kristian Rietveld <kris@gtk.org>
+
+ Fixes #78110
+
+ * gtk/gtktreeselection.c (_gtk_tree_selection_internal_select_node):
+ add override_browse_mode argument and implement,
+ (gtk_tree_selection_unselect_path): always unselect the path,
+ (toplevel): update uses of _gtk_tree_selection_internal_select_node
+
+ * gtk/gtktreeview.c: update uses of
+ _gtk_tree_selection_internal_select_node
+
+ * gtk/gtktreeprivate.h (_gtk_tree_selection_internal_select_node):
+ update prototype
+
+Tue Apr 9 21:39:44 2002 Kristian Rietveld <kris@gtk.org>
+
+ Fixes #77862
+
+ * gtk/gtktreeprivate.h: add _gtk_tree_view_column_has_editable_cell
+
+ * gtk/gtktreeviewcolumn.c (_gtk_tree_view_column_has_editable_cell):
+ new function
+
+ * gtk/gtktreeview.c (gtk_tree_view_button_press): send cell event
+ on first click when cell isn't editable
+
+Tue Apr 9 21:37:31 2002 Kristian Rietveld <kris@gtk.org>
+
+ * gtk/gtktreedatalist.c (_gtk_tree_data_list_check_type): add some
+ types which were missing and useful to use (fixes #77870)
+
2002-04-09 Anders Carlsson <andersca@gnu.org>
* gtk/gtkfilesel.c (open_new_dir): Initialize error to NULL.
+Tue Apr 9 21:41:24 2002 Kristian Rietveld <kris@gtk.org>
+
+ Fixes #78110
+
+ * gtk/gtktreeselection.c (_gtk_tree_selection_internal_select_node):
+ add override_browse_mode argument and implement,
+ (gtk_tree_selection_unselect_path): always unselect the path,
+ (toplevel): update uses of _gtk_tree_selection_internal_select_node
+
+ * gtk/gtktreeview.c: update uses of
+ _gtk_tree_selection_internal_select_node
+
+ * gtk/gtktreeprivate.h (_gtk_tree_selection_internal_select_node):
+ update prototype
+
+Tue Apr 9 21:39:44 2002 Kristian Rietveld <kris@gtk.org>
+
+ Fixes #77862
+
+ * gtk/gtktreeprivate.h: add _gtk_tree_view_column_has_editable_cell
+
+ * gtk/gtktreeviewcolumn.c (_gtk_tree_view_column_has_editable_cell):
+ new function
+
+ * gtk/gtktreeview.c (gtk_tree_view_button_press): send cell event
+ on first click when cell isn't editable
+
+Tue Apr 9 21:37:31 2002 Kristian Rietveld <kris@gtk.org>
+
+ * gtk/gtktreedatalist.c (_gtk_tree_data_list_check_type): add some
+ types which were missing and useful to use (fixes #77870)
+
2002-04-09 Anders Carlsson <andersca@gnu.org>
* gtk/gtkfilesel.c (open_new_dir): Initialize error to NULL.
G_TYPE_UCHAR,
G_TYPE_INT,
G_TYPE_UINT,
+ G_TYPE_LONG,
+ G_TYPE_ULONG,
+ G_TYPE_INT64,
+ G_TYPE_UINT64,
G_TYPE_ENUM,
G_TYPE_FLAGS,
G_TYPE_FLOAT,
GtkRBNode *node,
GtkRBTree *tree,
GtkTreePath *path,
- GdkModifierType state);
+ GdkModifierType state,
+ gboolean override_browse_mode);
gboolean _gtk_tree_view_find_node (GtkTreeView *tree_view,
GtkTreePath *path,
GtkRBTree **tree,
GtkCellEditable *editable_widget);
void _gtk_tree_view_column_stop_editing (GtkTreeViewColumn *tree_column);
void _gtk_tree_view_install_mark_rows_col_dirty (GtkTreeView *tree_view);
+gboolean _gtk_tree_view_column_has_editable_cell (GtkTreeViewColumn *column);
GtkTreeSelection* _gtk_tree_selection_new (void);
GtkTreeSelection* _gtk_tree_selection_new_with_tree_view (GtkTreeView *tree_view);
node,
tree,
anchor_path,
- 0);
+ 0,
+ FALSE);
if (anchor_path)
gtk_tree_path_free (anchor_path);
}
node,
tree,
path,
- state);
+ state,
+ FALSE);
}
/**
node,
tree,
path,
- GDK_CONTROL_MASK);
+ GDK_CONTROL_MASK,
+ TRUE);
}
/**
/* Called internally by gtktreeview.c It handles actually selecting the tree.
*/
+
+/**
+ * docs about the 'override_browse_mode', we set this flag when we want to
+ * unset select the node and override the select browse mode behaviour (that is
+ * 'one node should *always* be selected').
+ */
void
_gtk_tree_selection_internal_select_node (GtkTreeSelection *selection,
GtkRBNode *node,
GtkRBTree *tree,
GtkTreePath *path,
- GdkModifierType state)
+ GdkModifierType state,
+ gboolean override_browse_mode)
{
gint flags;
gint dirty = FALSE;
if (selection->type == GTK_SELECTION_SINGLE ||
selection->type == GTK_SELECTION_BROWSE)
{
+ /* just unselect */
+ if (selection->type == GTK_SELECTION_BROWSE && override_browse_mode)
+ {
+ dirty = gtk_tree_selection_real_unselect_all (selection);
+ }
/* Did we try to select the same node again? */
- if (selection->type == GTK_SELECTION_SINGLE &&
- anchor_path && gtk_tree_path_compare (path, anchor_path) == 0)
+ else if (selection->type == GTK_SELECTION_SINGLE &&
+ anchor_path && gtk_tree_path_compare (path, anchor_path) == 0)
{
if ((state & GDK_CONTROL_MASK) == GDK_CONTROL_MASK)
{
{
GtkTreePath *cursor = gtk_tree_row_reference_get_path (tree_view->priv->cursor);
- if (cursor && !gtk_tree_path_compare (cursor, path))
+ if ((cursor && !gtk_tree_path_compare (cursor, path))
+ || !_gtk_tree_view_column_has_editable_cell (column))
{
GtkCellEditable *cell_editable = NULL;
cursor_node,
cursor_tree,
cursor_path,
- state);
+ state,
+ FALSE);
gtk_tree_view_clamp_node_visible (tree_view, cursor_tree, cursor_node);
cursor_node,
cursor_tree,
cursor_path,
- GDK_CONTROL_MASK);
+ GDK_CONTROL_MASK,
+ FALSE);
gtk_tree_view_clamp_node_visible (tree_view, cursor_tree, cursor_node);
cursor_node,
cursor_tree,
cursor_path,
- 0);
+ 0,
+ FALSE);
}
gtk_tree_view_clamp_node_visible (tree_view, cursor_tree, cursor_node);
if (clear_and_select && !((state & GDK_CONTROL_MASK) == GDK_CONTROL_MASK))
_gtk_tree_selection_internal_select_node (tree_view->priv->selection,
node, tree, path,
- state);
+ state, FALSE);
gtk_tree_view_clamp_node_visible (tree_view, tree, node);
_gtk_tree_view_queue_draw_node (tree_view, tree, node, NULL);
}
column->button = NULL;
}
+gboolean
+_gtk_tree_view_column_has_editable_cell (GtkTreeViewColumn *column)
+{
+ GList *list;
+
+ for (list = column->cell_list; list; list = list ->next)
+ if (((GtkTreeViewColumnCellInfo *)list->data)->cell->mode ==
+ GTK_CELL_RENDERER_MODE_EDITABLE)
+ return TRUE;
+
+ return FALSE;
+}
+
/* Public Functions */